home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok59 / checkday / checkday.mod < prev    next >
Text File  |  1993-11-04  |  2KB  |  68 lines

  1. (* ------------------------------------------------------------------------
  2.   :Program.       CheckDay
  3.   :Author.        Kai Bolay [kai]
  4.   :Address.       Hoffmannstraße 168
  5.   :Address.       D-7250 Leonberg 1
  6.   :History.       v1.0 [kai] 29-Sep-91 (initial)
  7.   :Copyright.     PD
  8.   :Language.      Oberon
  9.   :Translator.    AMIGA OBERON v2.09e
  10. ------------------------------------------------------------------------ *)
  11. MODULE CheckDay;
  12.  
  13. IMPORT
  14.   d: Dos, e: Exec, y: SYSTEM;
  15. CONST
  16.   Version = "\o$VER: CheckDay v1.0 (29-Sep-91)\n\r";
  17.   Template = "From/A,To/A";
  18. VAR
  19.   RD: d.RDArgsPtr;
  20.   ArgArray: ARRAY 2 OF LONGINT;
  21.   Start, End, Now: INTEGER;
  22.   Date: d.Date;
  23.  
  24. PROCEDURE GetDay (Day: e.STRPTR): INTEGER;
  25. VAR
  26.   i: INTEGER;
  27. BEGIN
  28.   i := 0; WHILE Day^[i] # 0X DO Day^[i] := CAP (Day^[i]); INC (i) END;
  29.   IF    Day^ = "SUNDAY"    THEN RETURN 0;
  30.   ELSIF Day^ = "MONDAY"    THEN RETURN 1;
  31.   ELSIF Day^ = "TUESDAY"   THEN RETURN 2;
  32.   ELSIF Day^ = "WEDNESDAY" THEN RETURN 3;
  33.   ELSIF Day^ = "THURSDAY"  THEN RETURN 4;
  34.   ELSIF Day^ = "FRIDAY"    THEN RETURN 5;
  35.   ELSIF Day^ = "SATURDAY"  THEN RETURN 6;
  36.   ELSE RETURN -1 END;
  37. END GetDay;
  38.  
  39. BEGIN
  40.   IF d.dos.lib.version < 37 THEN
  41.     y.SETREG (0, d.Write (d.Output(), "Go, get a 2.0 ROM!\n", 19));
  42.     HALT (20);
  43.   END;
  44.   d.PrintF ("%s", y.ADR (Version)+7);
  45.   RD := d.ReadArgs (Template, ArgArray, NIL);
  46.   IF RD = NIL THEN
  47.     d.PrintF ("Usage: CheckDay %s\n", y.ADR (Template));
  48.     HALT (20);
  49.   END;
  50.   Start := GetDay (ArgArray[0]);
  51.   IF Start = -1 THEN
  52.     d.PrintF ("'%s' is no valid day of the week!\n", ArgArray[0]);
  53.     HALT (20);
  54.   END;
  55.   End := GetDay (ArgArray[1]);
  56.   IF End = -1 THEN
  57.     d.PrintF ("'%s' is no valid day of the week!\n", ArgArray[1]);
  58.     HALT (20);
  59.   END;
  60.   d.DateStamp (Date); Now := SHORT (Date.days MOD 7);
  61.   IF ((Start <= End) AND ((Now >= Start) AND (Now <= End))) OR
  62.      ((Start  > End) AND ((Now >= Start) OR  (Now <= End))) THEN
  63.     HALT (5);
  64.   END;
  65. CLOSE
  66.   IF RD # NIL THEN d.FreeArgs (RD); RD := NIL END;
  67. END CheckDay.
  68.